#_ExpImp.Rdf_
#Приведите данные к формату tidydf
#Отобразите суммарные значения экспорта и импорта по субъектам федерации находящимся в Центральном федеральном округе
#в виде столбчатой диаграммы [сгруппировав значения по названию субъекта федерации].
#Экспорт и импорт обозначьте разными цветами.
#Сделайте второй график, наложив столбцы экспорта и импорта один на другой и подписав значения разниц между экспортом и ипортом
library(dplyr)
## Warning: пакет 'dplyr' был собран под R версии 4.2.2
##
## Присоединяю пакет: 'dplyr'
## Следующие объекты скрыты от 'package:stats':
##
## filter, lag
## Следующие объекты скрыты от 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
## Warning: пакет 'tidyr' был собран под R версии 4.2.2
library(ggplot2)
## Warning: пакет 'ggplot2' был собран под R версии 4.2.2
library(stringr)
## Warning: пакет 'stringr' был собран под R версии 4.2.2
library(plotly)
## Warning: пакет 'plotly' был собран под R версии 4.2.2
##
## Присоединяю пакет: 'plotly'
## Следующий объект скрыт от 'package:ggplot2':
##
## last_plot
## Следующий объект скрыт от 'package:stats':
##
## filter
## Следующий объект скрыт от 'package:graphics':
##
## layout
path <- "C:/Users/User/studyR/data/ExpImp.Rdata"
load(path)
region <- "Центральный федеральный округ"
plot_first <- function(region){
df <- ExpImp
df <- df[complete.cases(df),]
for (i in 2:length(names(df))) {
df[[i]] <- gsub("-", 0, df[[i]])
df[[i]] <- as.numeric(df[[i]])
}
flt <- str_detect(df$Регион, 'федеральный округ')
rdf <- mutate(df, Округ = if_else(flt, Регион, NULL))
rdf <- fill(rdf, Округ)
flt2 <- !str_detect(rdf$Регион, 'Федерация|федеральный округ')
rdf <- filter(rdf, flt2)
match_exp <- select_at(rdf, vars(matches("Экспорт")))
match_imp <- select_at(rdf, vars(matches("Импорт")))
match_exp$Сумма <- rowSums(match_exp, na.rm = TRUE)
match_imp$Сумма <- rowSums(match_imp, na.rm = TRUE)
rdf$СуммаЭкспорта <- match_exp$Сумма
rdf$СуммаИмпорта <- match_imp$Сумма
rdf <- filter(rdf, Округ == region)
rdf <- rdf[,c("Регион", "СуммаЭкспорта", "СуммаИмпорта" )]
rdf <- pivot_longer(rdf, !Регион, names_to = "Метрика", values_to = "млн долларов США")
sum_reg <- rdf %>% group_by(Регион, `Метрика`)
sum_reg <- sum_reg %>% summarise(sum = sum(`млн долларов США`))
sum_reg |>
ggplot(mapping = aes(x = Регион, y = sum, fill = `Метрика`)) +
geom_col(color = 'black', size = 0.2, position = 'dodge') +
ggtitle(region) + ylab('млн долларов США') +
coord_flip()
}
plot_second <- function(region){
df <- ExpImp
df <- df[complete.cases(df),]
for (i in 2:length(names(df))) {
df[[i]] <- gsub("-", 0, df[[i]])
df[[i]] <- as.numeric(df[[i]])
}
flt <- str_detect(df$Регион, 'федеральный округ')
rdf <- mutate(df, Округ = if_else(flt, Регион, NULL))
rdf <- fill(rdf, Округ)
flt2 <- !str_detect(rdf$Регион, 'Федерация|федеральный округ')
rdf <- filter(rdf, flt2)
match_exp <- select_at(rdf, vars(matches("Экспорт")))
match_imp <- select_at(rdf, vars(matches("Импорт")))
match_exp$Сумма <- rowSums(match_exp, na.rm = TRUE)
match_imp$Сумма <- rowSums(match_imp, na.rm = TRUE)
rdf$СуммаЭкспорта <- match_exp$Сумма
rdf$СуммаИмпорта <- match_imp$Сумма
rdf$Разница <- abs(match_exp$Сумма - match_imp$Сумма)
rdf <- filter(rdf, Округ == region)
g <- ggplot(rdf) +
geom_col(aes(x = rdf$`Регион`, y = rdf$`СуммаЭкспорта`),fill = "blue", width = 0.2) +
geom_col(aes(x = rdf$`Регион`, y = rdf$`СуммаИмпорта`), alpha = 0.3, fill = "red", width = 0.6) +
geom_text(aes(label = rdf$`Разница`, x = rdf$Регион, y = max(rdf$СуммаЭкспорта,rdf$СуммаИмпорта))) +
ggtitle(region) +
xlab('Регион') +
ylab('млн долларов США') +
coord_flip()
plotly::ggplotly(g)
}
plot_first(region)
## `summarise()` has grouped output by 'Регион'. You can override using the
## `.groups` argument.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.

plot_second(region)
## Warning: Use of `rdf$Регион` is discouraged.
## ℹ Use `Регион` instead.
## Warning: Use of `rdf$СуммаЭкспорта` is discouraged.
## ℹ Use `СуммаЭкспорта` instead.
## Warning: Use of `rdf$Регион` is discouraged.
## ℹ Use `Регион` instead.
## Warning: Use of `rdf$СуммаИмпорта` is discouraged.
## ℹ Use `СуммаИмпорта` instead.
## Warning: Use of `rdf$Регион` is discouraged.
## ℹ Use `Регион` instead.
## Warning: Use of `rdf$СуммаЭкспорта` is discouraged.
## ℹ Use `СуммаЭкспорта` instead.
## Warning: Use of `rdf$СуммаИмпорта` is discouraged.
## ℹ Use `СуммаИмпорта` instead.
## Warning: Use of `rdf$Разница` is discouraged.
## ℹ Use `Разница` instead.